from django.utils.deprecation import MiddlewareMixin  #导入中间件
from shop_project.settings import SECRET_KEY   #导入密钥
import jwt

# 自定义中间件，继承自MiddlewareMixin
class MyMiddleware(MiddlewareMixin):
    # 重写process_request的方法：实现对请求的统一处理，在这里做用户认证
    def process_request(self,request):
        # 从请求头中，提取token信息
        token = request.headers.get('token')
        if not token:  #判断请求头中携带token字段
            print('没有携带token信息')
            return
        #解析token信息
        user_info = jwt.decode(jwt=token,key=SECRET_KEY,algorithms='HS256')
        # 判断是否获取到用户信息
        if user_info:
            # 给request添加一个字段，保存用户信息
            request.user_info = user_info
        else:
            # 没有用户信息，给request添加一个空字段
            request.user_info = None
